// ========================================================================= //
// File Name   : GPCE061.inc                                                 //    
// Description : SPCE061A register definitions                               //
// Processor   : SPCE061A                                                    //    
// Revision       : v1.00, 2005-10-19                                        //
// ========================================================================= //

//***************************************************************************//
//    Register definitions                                                   //
//***************************************************************************//

//    IO port control registers
    .DEFINE        P_IOA_Data                 0x7000
    .DEFINE        P_IOA_Buffer               0x7001
    .DEFINE        P_IOA_Dir                  0x7002
    .DEFINE        P_IOA_Attrib               0x7003
    .DEFINE        P_IOA_Latch                0x7004

    .DEFINE        P_IOB_Data                 0x7005
    .DEFINE        P_IOB_Buffer               0x7006
    .DEFINE        P_IOB_Dir                  0x7007
    .DEFINE        P_IOB_Attrib               0x7008

//    Timer control registers
    .DEFINE        P_TimerA_Data              0x700A
    .DEFINE        P_TimerA_Ctrl              0x700B
    .DEFINE        P_TimerB_Data              0x700C
    .DEFINE        P_TimerB_Ctrl              0x700D

//    Timebase control registers
    .DEFINE        P_TimeBase_Setup           0x700E
    .DEFINE        P_Timebase_Setup           0x700E        // Same as P_TimeBase_Setup
    .DEFINE        P_TimeBase_Clear           0x700F
    .DEFINE        P_Timebase_Clear           0x700F        // Same as P_TimeBase_Clear

//    Interrupt control registers
    .DEFINE        P_INT_Ctrl                 0x7010
    .DEFINE        P_INT_Clear                0x7011
    .DEFINE        P_INT_Mask                 0x702D
    .DEFINE        P_INT_Ctrl_New             0x702D        // Same as P_INT_Mask

//    Analog functions control registers
    .DEFINE        P_ADC                      0x7014
    .DEFINE        P_ADC_Ctrl                 0x7015
    .DEFINE        P_ADC_MUX_Ctrl             0x702B
    .DEFINE        P_ADC_MUX_Data             0x702C
    .DEFINE        P_ADC_LINEIN_Data          0x702C        // Same as P_ADC_MUX_Data
    .DEFINE        P_ADC_LineIn_Data          0x702C        // Same as P_ADC_MUX_Data

    .DEFINE        P_DAC_Ctrl                 0x702A
    .DEFINE        P_DAC1                     0x7017
    .DEFINE        P_DAC2                     0x7016

//    Serial    functions control registers
    .DEFINE        P_SIO_Data                 0x701A
    .DEFINE        P_SIO_Addr_Low             0x701B
    .DEFINE        P_SIO_Addr_Mid             0x701C
    .DEFINE        P_SIO_Addr_High            0x701D
    .DEFINE        P_SIO_Ctrl                 0x701E
    .DEFINE        P_SIO_Start                0x701F
    .DEFINE        P_SIO_Stop                 0x7020

    .DEFINE        P_UART_Command1            0x7021
    .DEFINE        P_UART_Command2            0x7022
    .DEFINE        P_UART_Data                0x7023
    .DEFINE        P_UART_BaudScalarLow       0x7024
    .DEFINE        P_UART_BaudScalarHigh      0x7025

//    Other control registers
    .DEFINE        P_Feedback                 0x7009
    .DEFINE        P_SystemClock              0x7013
    .DEFINE        P_Watchdog_Clear           0x7012
    .DEFINE        P_LVD_Ctrl                 0x7019
    .DEFINE        P_Flash_Ctrl               0x7555


//***************************************************************************//
//    Constant definitions                                                     //
//***************************************************************************//
//    Constants for interrupt
    .DEFINE        C_FIQ_PWM                  0x8000        // P_INT_Ctrl
    .DEFINE        C_FIQ_TMA                  0x2000        // P_INT_Ctrl
    .DEFINE        C_FIQ_TMB                  0x0800        // P_INT_Ctrl
    .DEFINE        C_IRQ0_PWM                 0x4000        // P_INT_Ctrl
    .DEFINE        C_IRQ1_TMA                 0x1000        // P_INT_Ctrl
    .DEFINE        C_IRQ2_TMB                 0x0400        // P_INT_Ctrl
    .DEFINE        C_IRQ3_KEY                 0x0080        // P_INT_Ctrl
    .DEFINE        C_IRQ3_EXT1                0x0100        // P_INT_Ctrl
    .DEFINE        C_IRQ3_EXT2                0x0200        // P_INT_Ctrl
    .DEFINE        C_IRQ4_1KHz                0x0010        // P_INT_Ctrl
    .DEFINE        C_IRQ4_2KHz                0x0020        // P_INT_Ctrl
    .DEFINE        C_IRQ4_4KHz                0x0040        // P_INT_Ctrl
    .DEFINE        C_IRQ5_2Hz                 0x0004        // P_INT_Ctrl
    .DEFINE        C_IRQ5_4Hz                 0x0008        // P_INT_Ctrl
    .DEFINE        C_IRQ6_TMB1                0x0002        // P_INT_Ctrl
    .DEFINE        C_IRQ6_TMB2                0x0001        // P_INT_Ctrl

//    Constants for TimerA & TimerB
    .DEFINE        C_TMA1_FOSC_2              0x0000        // P_TimerA_Ctrl
    .DEFINE        C_TMA1_FOSC_256            0x0001        // P_TimerA_Ctrl
    .DEFINE        C_TMA1_32KHz               0x0002        // P_TimerA_Ctrl
    .DEFINE        C_TMA1_8KHz                0x0003        // P_TimerA_Ctrl
    .DEFINE        C_TMA1_4KHz                0x0004        // P_TimerA_Ctrl
    .DEFINE        C_TMA1_1                   0x0005        // P_TimerA_Ctrl
    .DEFINE        C_TMA1_0                   0x0006        // P_TimerA_Ctrl
    .DEFINE        C_TMA1_EXT1                0x0007        // P_TimerA_Ctrl
    .DEFINE        C_TMA2_2KHz                0x0000        // P_TimerA_Ctrl
    .DEFINE        C_TMA2_1KHz                0x0008        // P_TimerA_Ctrl
    .DEFINE        C_TMA2_256Hz               0x0010        // P_TimerA_Ctrl
    .DEFINE        C_TMA2_TMB1                0x0018        // P_TimerA_Ctrl
    .DEFINE        C_TMA2_4Hz                 0x0020        // P_TimerA_Ctrl
    .DEFINE        C_TMA2_2Hz                 0x0028        // P_TimerA_Ctrl
    .DEFINE        C_TMA2_1                   0x0030        // P_TimerA_Ctrl
    .DEFINE        C_TMA2_EXT2                0x0038        // P_TimerA_Ctrl
    .DEFINE        C_TMA_PWM_OFF              0x0000        // P_TimerA_Ctrl
    .DEFINE        C_TMA_PWM_D1               0x0040        // P_TimerA_Ctrl
    .DEFINE        C_TMA_PWM_D2               0x0080        // P_TimerA_Ctrl
    .DEFINE        C_TMA_PWM_D3               0x00C0        // P_TimerA_Ctrl
    .DEFINE        C_TMA_PWM_D4               0x0100        // P_TimerA_Ctrl
    .DEFINE        C_TMA_PWM_D5               0x0140        // P_TimerA_Ctrl
    .DEFINE        C_TMA_PWM_D6               0x0180        // P_TimerA_Ctrl
    .DEFINE        C_TMA_PWM_D7               0x01C0        // P_TimerA_Ctrl
    .DEFINE        C_TMA_PWM_D8               0x0200        // P_TimerA_Ctrl
    .DEFINE        C_TMA_PWM_D9               0x0240        // P_TimerA_Ctrl
    .DEFINE        C_TMA_PWM_D10              0x0280        // P_TimerA_Ctrl
    .DEFINE        C_TMA_PWM_D11              0x02C0        // P_TimerA_Ctrl
    .DEFINE        C_TMA_PWM_D12              0x0300        // P_TimerA_Ctrl
    .DEFINE        C_TMA_PWM_D13              0x0340        // P_TimerA_Ctrl
    .DEFINE        C_TMA_PWM_D14              0x0380        // P_TimerA_Ctrl
    .DEFINE        C_TMA_PWM_TA               0x03C0        // P_TimerA_Ctrl
                                        
    .DEFINE        C_TMB_FOSC_2               0x0000        // P_TimerB_Ctrl
    .DEFINE        C_TMB_FOSC_256             0x0001        // P_TimerB_Ctrl
    .DEFINE        C_TMB_32KHz                0x0002        // P_TimerB_Ctrl
    .DEFINE        C_TMB_8KHz                 0x0003        // P_TimerB_Ctrl
    .DEFINE        C_TMB_4KHz                 0x0004        // P_TimerB_Ctrl
    .DEFINE        C_TMB_1                    0x0005        // P_TimerB_Ctrl
    .DEFINE        C_TMB_0                    0x0006        // P_TimerB_Ctrl
    .DEFINE        C_TMB_EXT1                 0x0007        // P_TimerB_Ctrl
    .DEFINE        C_TMB_PWM_OFF              0x0000        // P_TimerB_Ctrl
    .DEFINE        C_TMB_PWM_D1               0x0040        // P_TimerB_Ctrl
    .DEFINE        C_TMB_PWM_D2               0x0080        // P_TimerB_Ctrl
    .DEFINE        C_TMB_PWM_D3               0x00C0        // P_TimerB_Ctrl
    .DEFINE        C_TMB_PWM_D4               0x0100        // P_TimerB_Ctrl
    .DEFINE        C_TMB_PWM_D5               0x0140        // P_TimerB_Ctrl
    .DEFINE        C_TMB_PWM_D6               0x0180        // P_TimerB_Ctrl
    .DEFINE        C_TMB_PWM_D7               0x01C0        // P_TimerB_Ctrl
    .DEFINE        C_TMB_PWM_D8               0x0200        // P_TimerB_Ctrl
    .DEFINE        C_TMB_PWM_D9               0x0240        // P_TimerB_Ctrl
    .DEFINE        C_TMB_PWM_D10              0x0280        // P_TimerB_Ctrl
    .DEFINE        C_TMB_PWM_D11              0x02C0        // P_TimerB_Ctrl
    .DEFINE        C_TMB_PWM_D12              0x0300        // P_TimerB_Ctrl
    .DEFINE        C_TMB_PWM_D13              0x0340        // P_TimerB_Ctrl
    .DEFINE        C_TMB_PWM_D14              0x0380        // P_TimerB_Ctrl
    .DEFINE        C_TMB_PWM_TB               0x03C0        // P_TimerB_Ctrl

//    Constants for TimeBase
    .DEFINE        C_TMB1_8Hz                 0x0000        // P_Timebase_Setup
    .DEFINE        C_TMB1_16Hz                0x0001        // P_Timebase_Setup
    .DEFINE        C_TMB1_32Hz                0x0002        // P_Timebase_Setup
    .DEFINE        C_TMB1_64Hz                0x0003        // P_Timebase_Setup
    .DEFINE        C_TMB2_128Hz               0x0000        // P_Timebase_Setup
    .DEFINE        C_TMB2_256Hz               0x0004        // P_Timebase_Setup
    .DEFINE        C_TMB2_512Hz               0x0008        // P_Timebase_Setup
    .DEFINE        C_TMB2_1024Hz              0x000c        // P_Timebase_Setup

//    Constants for system clock
    .DEFINE        C_Fosc_49M                 0x0080        // P_SystemClock
    .DEFINE        C_Fosc_40M                 0x0060        // P_SystemClock
    .DEFINE        C_Fosc_32M                 0x0040        // P_SystemClock
    .DEFINE        C_Fosc_24M                 0x0000        // P_SystemClock
    .DEFINE        C_Fosc_20M                 0x0020        // P_SystemClock
                                        
    .DEFINE        C_Fosc                     0x0000        // P_SystemClock
    .DEFINE        C_Fosc_Div_2               0x0001        // P_SystemClock
    .DEFINE        C_Fosc_Div_4               0x0002        // P_SystemClock
    .DEFINE        C_Fosc_Div_8               0x0003        // P_SystemClock
    .DEFINE        C_Fosc_Div_16              0x0004        // P_SystemClock
    .DEFINE        C_Fosc_Div_32              0x0005        // P_SystemClock
    .DEFINE        C_Fosc_Div_64              0x0006        // P_SystemClock
    .DEFINE        C_Sleep                    0x0007        // P_SystemClock

    .DEFINE        C_StrongMode               0x0008        // P_SystemClock
    .DEFINE        C_AutoMode                 0x0000        // P_SystemClock
    .DEFINE        C_32K_Work                 0x0010        // P_SystemClock
    .DEFINE        C_32K_Off                  0x0000        // P_SystemClock

//    Constants for ADC & DAC
    .DEFINE        C_ADC_EN                   0x0001        // P_ADC_Ctrl
    .DEFINE        C_ADC_DIS                  0x0000        // P_ADC_Ctrl
    .DEFINE        C_MIC_RDY                  0x8000        // P_ADC_Ctrl
    .DEFINE        C_MIC_EN                   0x0000        // P_ADC_Ctrl
    .DEFINE        C_MIC_DIS                  0x0002        // P_ADC_Ctrl
    .DEFINE        C_MIC_AGC_EN               0x0000        // P_ADC_Ctrl
    .DEFINE        C_MIC_AGC_DIS              0x0000        // P_ADC_Ctrl
    .DEFINE        C_VEXTREF_EN               0x0080        // P_ADC_Ctrl
    .DEFINE        C_VEXTREF_DIS              0x0000        // P_ADC_Ctrl
    .DEFINE        C_2V_EN                    0x0100        // P_ADC_Ctrl
    .DEFINE        C_2V_DIS                   0x0000        // P_ADC_Ctrl
    .DEFINE        C_DAC_3mA                  0x0040        // P_ADC_Ctrl
    .DEFINE        C_DAC_2mA                  0x0000        // P_ADC_Ctrl
                                        
    .DEFINE        C_ADC_MUX_MIC              0x0000        // P_ADC_MUX_Ctrl
    .DEFINE        C_ADC_MUX_IOA0             0x0001        // P_ADC_MUX_Ctrl
    .DEFINE        C_ADC_MUX_IOA1             0x0002        // P_ADC_MUX_Ctrl
    .DEFINE        C_ADC_MUX_IOA2             0x0003        // P_ADC_MUX_Ctrl
    .DEFINE        C_ADC_MUX_IOA3             0x0004        // P_ADC_MUX_Ctrl
    .DEFINE        C_ADC_MUX_IOA4             0x0005        // P_ADC_MUX_Ctrl
    .DEFINE        C_ADC_MUX_IOA5             0x0006        // P_ADC_MUX_Ctrl
    .DEFINE        C_ADC_MUX_IOA6             0x0007        // P_ADC_MUX_Ctrl
    .DEFINE        C_LINEIN_FAIL              0x4000        // P_ADC_MUX_Ctrl
    .DEFINE        C_LINEIN_RDY               0x8000        // P_ADC_MUX_Ctrl

    .DEFINE        C_DAC1_DIRECT              0x0000        // P_DAC_Ctrl
    .DEFINE        C_DAC1_LATCH_A             0x0080        // P_DAC_Ctrl
    .DEFINE        C_DAC1_LATCH_B             0x0100        // P_DAC_Ctrl
    .DEFINE        C_DAC1_LATCH_AB            0x0180        // P_DAC_Ctrl
    .DEFINE        C_DAC2_DIRECT              0x0000        // P_DAC_Ctrl
    .DEFINE        C_DAC2_LATCH_A             0x0020        // P_DAC_Ctrl
    .DEFINE        C_DAC2_LATCH_B             0x0040        // P_DAC_Ctrl
    .DEFINE        C_DAC2_LATCH_AB            0x0060        // P_DAC_Ctrl
    .DEFINE        C_MIC_DIRECT               0x0000        // P_DAC_Ctrl
    .DEFINE        C_MIC_LATCH_A              0x0008        // P_DAC_Ctrl
    .DEFINE        C_MIC_LATCH_B              0x0010        // P_DAC_Ctrl
    .DEFINE        C_MIC_LATCH_AB             0x0018        // P_DAC_Ctrl
    .DEFINE        C_DAC_DIS                  0x0002        // P_DAC_Ctrl

//    Constants for SIO
    .DEFINE        C_SIO_CONFIG               0x0080        // P_SIO_Ctrl
    .DEFINE        C_SIO_READ                 0x0000        // P_SIO_Ctrl
    .DEFINE        C_SIO_WRITE                0x0040        // P_SIO_Ctrl
    .DEFINE        C_SIO_CLOCK_32             0x0018        // P_SIO_Ctrl
    .DEFINE        C_SIO_CLOCK_16             0x0000        // P_SIO_Ctrl
    .DEFINE        C_SIO_CLOCK_8              0x0010        // P_SIO_Ctrl
    .DEFINE        C_SIO_ADDR_24              0x0003        // P_SIO_Ctrl
    .DEFINE        C_SIO_ADDR_16              0x0000        // P_SIO_Ctrl
    .DEFINE        C_SIO_ADDR_8               0x0002        // P_SIO_Ctrl
    .DEFINE        C_SIO_ADDR_NO              0x0001        // P_SIO_Ctrl

    .DEFINE        C_SIO_BUSY                 0x0080        // P_SIO_Start

//    Constants for UART
    .DEFINE        C_UART_RX_INT              0x0080        // P_UART_Command1
    .DEFINE        C_UART_TX_INT              0x0040        // P_UART_Command1    
    .DEFINE        C_UART_RESET               0x0020        // P_UART_Command1    
    .DEFINE        C_UART_PARITY_EVEN         0x0008        // P_UART_Command1    
    .DEFINE        C_UART_PARITY_ODD          0x0000        // P_UART_Command1    
    .DEFINE        C_UART_PARITY_EN           0x0004        // P_UART_Command1    
    .DEFINE        C_UART_PARITY_DIS          0x0000        // P_UART_Command1    

    .DEFINE        C_UART_RX_RDY              0x0080        // P_UART_Command2
    .DEFINE        C_UART_TX_RDY              0x0040        // P_UART_Command2
    .DEFINE        C_UART_RX_EN               0x0080        // P_UART_Command2
    .DEFINE        C_UART_TX_EN               0x0040        // P_UART_Command2
    .DEFINE        C_UART_PE                  0x0008        // P_UART_Command2
    .DEFINE        C_UART_OE                  0x0010        // P_UART_Command2
    .DEFINE        C_UART_FE                  0x0020        // P_UART_Command2

//    Constants for Feedback
    .DEFINE        C_FEEDBACK1_EN             0x0004        // P_Feedback
    .DEFINE        C_FEEDBACK2_EN             0x0008        // P_Feedback
    .DEFINE        C_IRTX_EN                  0x0001        // P_Feedback

//    Constants for LVD
    .DEFINE        C_LVD33V                   0x0002        // P_LVD_Ctrl
    .DEFINE        C_LVD29V                   0x0001        // P_LVD_Ctrl

//    Other Constants
    .DEFINE        C_WDTCLR                   0x0001        // P_Watchdog_Clear
    
///////////////////////////////////////////////////////////////////
//    Old definitions for LVD @'hardware.inc'
    .DEFINE        C_LVD24V                   0x0000        // P_LVD_Ctrl
    .DEFINE        C_LVD28V                   0x0001        // P_LVD_Ctrl
    .DEFINE        C_LVD32V                   0x0002        // P_LVD_Ctrl
    .DEFINE        C_LVD36V                   0x0003        // P_LVD_Ctrl

//    Old definitions for TimerA & TimerB @'hardware.inc'
    .DEFINE        C_Fosc_2                   0x0000        // P_TimerA_Ctrl
    .DEFINE        C_Fosc_256                 0x0001        // P_TimerA_Ctrl
    .DEFINE        C_32768Hz                  0x0002        // P_TimerA_Ctrl
    .DEFINE        C_8192Hz                   0x0003        // P_TimerA_Ctrl
    .DEFINE        C_4096Hz                   0x0004        // P_TimerA_Ctrl
    .DEFINE        C_A1                       0x0005        // P_TimerA_Ctrl
    .DEFINE        C_A0                       0x0006        // P_TimerA_Ctrl
    .DEFINE        C_Ext1                     0x0007        // P_TimerA_Ctrl

    .DEFINE        C_2048Hz                   0x0000        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_1024Hz                   0x0008        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_256Hz                    0x0010        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_TMB1Hz                   0x0018        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_4Hz                      0x0020        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_2Hz                      0x0028        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_B1                       0x0030        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_Ext2                     0x0038        // P_TimerA_Ctrl, P_TimerB_Ctrl

    .DEFINE        C_Off                      0x0000        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_D1                       0x0040        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_D2                       0x0080        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_D3                       0x00C0        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_D4                       0x0100        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_D5                       0x0140        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_D6                       0x0180        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_D7                       0x01C0        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_D8                       0x0200        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_D9                       0x0240        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_D10                      0x0280        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_D11                      0x02C0        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_D12                      0x0300        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_D13                      0x0340        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_D14                      0x0380        // P_TimerA_Ctrl, P_TimerB_Ctrl
    .DEFINE        C_TA_Div_2                 0x03C0        // P_TimerA_Ctrl
    .DEFINE        C_TB_Div_2                 0x03C0        // P_TimerB_Ctrl

//========================================================================================
// End of GPCE061.inc
//========================================================================================
